import Actions from './actions';
import Events from './events';

function JdWebCall(options) {
  console.log('initialParams --> ', JdWebCall.initialParams);
  const defaultOptions = {
    erpid: '', // SDK使用方不用填 TODO: 看是否需要使用其他替代
    ringurl: '', // 振铃音乐
    hangupringurl: '', // 挂机提醒音乐
    callingurl: '', // 外呼开始音乐
    callRing: '', // 接通音
    hangRing: '', // 挂断音
    reconnect: true, // 是否断线重连
    call_expires: 30, // 外呼超时挂机时间（秒）
    defaultState: 'Ready', // 默认状态
    callserverurl: '', // 电话平台对地址 TODO: SDK使用方不用填 SDK填充
    ctiISV: '', // 软电话提供商 TODO: SDK使用方不用填 SDK填充
    success: (instance) => { // 初始化成功回调
      console.log(instance);
    },
    error: (message) => { // 初始化失败回调
      console.log(message);
    },
  };

  this.options = Object.assign(defaultOptions, options);
  this.config = {
    IsAutoAnswer: true, // 自动接听
    IsAutoHHCommit: 10, // 指定秒数后自动话后提交，空为手动提交
  };

  this.events = new Events(options);
  this.actions = new Actions(options, this.events);
}

JdWebCall.CreateCall = function (options = {}) {
  let instance = null;
  try {
    instance = new JdWebCall(options);
    if (options.success) options.success(instance);
  } catch (e) {
    console.error(e.message || '实例化 JdWebCall 失败');
  }

  return instance;
};

export default JdWebCall;
